1. Field of the Invention
The present invention relates to embedded ROM (read only memory) applications in a microprocessor system. More specifically, a device and method is disclosed that executes corrected code segments in RAM (random access memory) in place of faulty or outdated ROM code segments.
2. Description of the Prior Art
Advances in semiconductor technology have allowed the integration of microprocessors, memories, and related items into a single computer chip known as an embedded microprocessor system. Such a system will normally comprise some mask ROM (read only memory) that includes application code basic to the functionality of the microprocessor system and some RAM (random access memory) for use during processing of the code. The mask ROM is used primarily because it is relatively inexpensive, yet there is a hidden cost when the embedded code contains a bug.
Once code is written into the mask ROM, making changes to the code is a difficult, time consuming, and an expensive undertaking. If the originally written code is faulty or needs to be updated, manufacturing an entirely new microprocessor system is often preferable to attempting to implement changes in the mask ROM.
Several devices have been put forth to allow the execution of corrected code stored in the RAM portion of the memory in place of faulty or outdated code written into the mask ROM. One such device is U.S. Pat. No. 5,623,665. Built into the ROM at predetermined intervals is a command for jumping to an address X in RAM. If no patch is to be applied to the corresponding section of code, a return statement is located at the address X and normal processing continues. If the corresponding section of code is to be updated, the replacement code is located at the address X and executed before returning to the next section of mask ROM code.
Another such device is disclosed in U.S. Pat. No. 5,938,774. In this disclosure, a faulty-segment address table and a repair-segment address table is set up. A plurality of digital comparators, one for each entry in the faulty-segment address table, is used to compare the current address in a program counter with the addresses in the faulty-segment address table. An equality result from one of the digital comparators indicates that the current section of code needs corrected and the flow of control jumps to an address shown in the repair-segment address table corresponding to the entry in the faulty-segment address table. The address in the repair-segment address table contains the updated code, which is then executed before returning to the next section of mask ROM code.
A problem with the first solution is that the commands for jumping to an address X in RAM must be encoded into the mask ROM before it is known if any or how many segments of code in the mask ROM need to be replaced. Therefore, a probability of unnecessary jumps is high. Additionally, because the “X” of address X must be defined with no pre-knowledge of corrections needed, it is nearly impossible to provide continuous code and to avoid wasted RAM space without incurring additional jumps to another address.
A problem with the second solution is that there must be a digital comparator for each entry in the faulty-segment address table built into the microprocessor system, again with no foreknowledge of any or how many segments of code in the mask ROM need to be replaced. This factor can increase manufacturing costs if unneeded digital comparators are included in the microprocessor system, and can fail to work correctly if the number of digital comparators included in the microprocessor system is less than the number of segments of ROM code that need to be replaced.